package inge_soft.gestoriusNuevo.business.controller.validation;

import inge_soft.gestoriusNuevo.persistence.entity.implementation.Categoria;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.Evento;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.Institucion;

import java.util.Date;
import java.util.Map;

import org.zkoss.bind.Property;
import org.zkoss.bind.ValidationContext;
import org.zkoss.bind.validator.AbstractValidator;

public class ValidadorEvento extends AbstractValidator {

	public void validate(ValidationContext ctx) {

		Map<String, Property> beanProps = ctx.getProperties(ctx.getProperty()
				.getBase());

		validarVacios(ctx,(String) beanProps.get("descripcion").getValue(),
				(String) beanProps.get("coordinador").getValue(),
				(String) beanProps.get("contacto").getValue() ,
				(String) beanProps.get("lugar").getValue(),
				(Date) beanProps.get("fechaInicio").getValue(),
				(Date) beanProps.get("fechaFin").getValue(),
				(String) beanProps.get("nombre").getValue());
		
		validarFechas(ctx, (Date) beanProps.get("fechaInicio").getValue(),
				(Date) beanProps.get("fechaFin").getValue());
		validarTieneCondicion(ctx,(Boolean) beanProps.get("tieneCondicionIngreso").getValue(),(String) beanProps.get("condicionIngreso").getValue());
	}

	/*
	 * private void validateVacios(ValidationContext ctx, String password,
	 * String retype, String email, String userName, String nombre, String
	 * apellido, String nroDocumento) { if (password == null || retype == null
	 * || email == null || userName == null || nombre == null || apellido ==
	 * null || nroDocumento == null) { this.addInvalidMessage(ctx, "userName",
	 * "Se deben ingresar todos los campos obligatorios  [*]"); }
	 * 
	 * }
	 */

	private void validarTieneCondicion(ValidationContext ctx, Boolean value,
			String value2) {
		if(value == true &&value2.isEmpty()){
			this.addInvalidMessage(ctx, "tieneCondicionIngreso",
					"Debe ingresar la condicion");
		}
		
	}

	private void validarVacios(ValidationContext ctx, String descrip, String coo, String cont,
			String lugar, Date fi, Date ff,String nombre) {
		if ( descrip == null || coo == null
				|| cont == null || fi == null || ff == null || lugar == null || nombre == null) {

			this.addInvalidMessage(ctx, "insitucion",
					"Se deben ingresar todos los campos obligatorios [*]");

		}
		return;
	}

	private void validarFechas(ValidationContext ctx, Date fechaInicio,
			Date fechaFin) {
		if (fechaInicio == null || fechaFin == null) {
			this.addInvalidMessage(ctx, "fechas", "Debe ingresar ambas fechas");
			return;
		}
		if (fechaFin.compareTo(fechaInicio) <= 0) {
			this.addInvalidMessage(ctx, "fechas",
					"La fecha de fin no puedo ser anterior a la de inicio");
		}

	}

}
